There have been continual advances in hardware components for digital computers, such as processors, memory, storage, and network interfaces. An increasing amount of processing power, memory capacity, storage capacity, and network data transmission bandwidth is available at decreasing cost. Complex computer systems for a variety of applications are being constructed from rather inexpensive commodity hardware components. The development and maintenance of application software, however, have become an increasing burden. Moreover, operating systems have become more complex. Some operating systems require frequent updates as software bugs and vulnerabilities become exposed during normal use.
The addition of hardware components to a computer system typically requires a software change to the operating system or firmware, and the system must be shut down and restarted for these changes to become effective. System users are tolerant of these minor service disruptions because the system capabilities are enhanced.
Occasionally a software installation or update will be unsuccessful. In a typical good case of an unsuccessful software installation or update, an error message will result before the system is shut down for re-boot, and an administrator will have the option of diagnosing the error and attempting to continue the installation or update process after a change in the desired system configuration. In a typical bad case of an unsuccessful software installation or update, an error message results after system shut-down and re-boot, and an administrator has the option of diagnosing the error while users are denied service, or else attempting to restore the system configuration to the state existing at the start of the installation or update process. An unsuccessful attempt to update an operating system is especially annoying because there is continued exposure to the software bugs and vulnerabilities that need correcting.
More recently, it has been possible for certain kinds of software configuration changes to be made without a need for shutting down and restarting the computer system.